<?php

namespace Illuminate\Support;

/**
 * 高阶 Tap 代理
 */
class HigherOrderTapProxy
{
    /**
     * 被代理的目标值
     *
     * @var mixed
     */
    public $target;

    /**
     * 创建一个 Tap 代理实例
     *
     * @param  mixed $target
     * @return void
     */
    public function __construct($target)
    {
        $this->target = $target;
    }

    /**
     * 动态地将方法调用传递给目标
     *
     * @param  string $method
     * @param  array $parameters
     * @return mixed
     */
    public function __call($method, $parameters)
    {
        $this->target->{$method}(...$parameters);

        return $this->target;
    }
}
